package au.com.acpfg.misc.jemboss.settings;
import java.util.HashMap;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.knime.core.data.DataTableSpec;
import au.com.acpfg.misc.jemboss.local.JEmbossProcessorNodeModel;
import au.com.acpfg.misc.jemboss.local.ProgramSettingsListener;
/**
* A setting naming a codon usage table as provided by emboss. This is a simple-minded implementation.
* Just like me ;-)
*
* @author andrew.cassin
*
*/
public class CodonUsageTableSetting extends StringSetting {
/**
* Default codon usage table should one not be specified by the setting instance. Emboss specific value.
*/
public final static String DEFAULT_CUT = "Eyeast_cai.cut";
public CodonUsageTableSetting(HashMap<String,String> attrs) {
super(attrs);
}
@Override
public JComponent make_widget(DataTableSpec dt) {
JList jl = new JList(JEmbossProcessorNodeModel.getCodons());
jl.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
setValue(((JList)e.getSource()).getSelectedValue().toString());
}
});
jl.setSelectedIndex(0);
return new JScrollPane(jl);
}
@Override
public void getArguments(ProgramSettingsListener l) {
String v = getValue();
String codon = DEFAULT_CUT;
if (v != null && v.length() > 0) {
codon = v;
}
l.addArgument(this, new String[] { "-"+getName(), codon });
}
public static boolean canEmboss(String acd_type) {
return (acd_type.equals("codon"));
}
}